1. Field of the Invention
The present invention relates generally to color conversion and more particularly to color conversion in higher dimensional color spaces.
2. Description of the Related Art
A conventional color printer system employs Cyan Magenta Yellow and blacK (CMYK) inks. To extend the range of colors that a color printer can produce, that is extend the gamut of colors the color printer can produce, one approach taken is to add new inks to the system. The inks typically added are colors that CMYK inks have difficulty reproducing. Common choices are orange, green, red, blue, etc. In another vein, in an attempt to increase the “apparent resolution” of the color printer, inks with different tints have been used, such as light cyan, light magenta, etc. In effect, the resulting color printer has more than four channels. After a decade's development of “high fidelity” printing, as printing using multi-channel systems such as CMYK systems that have been enhanced with additional inks is known, it is now common to encounter printers with more than four channels.
Color printers are peculiar in the sense that although the color printer is often the final output device, people are also interested in color conversion from the color printer's color space to another color device's color space. In the case of a CMYK color printer, one such transformation is from CMYK to XYZ, known as the “forward model” of the color printer. By combining the forward model with other transformations, it is possible to emulate CMYK prints on another device. For instance, a CMYK printer to Red Green Blue (RGB) monitor conversion would make it possible to proof the output of the CMYK printer on an RGB monitor. Similarly, the same applies to high fidelity printers. A CMYK Orange Green (CMYKOG) to RGB conversion would allow proofing of CMYKOG output on a RGB monitor.
A conventional approach of implementing such color conversion efficiently is via a uniform Look-Up Table (LUT). For example, in an International Color Consortium (ICC) profile for a CMYKOG printer, the ICC specification mandates a so-called A2B1 tag that stores a uniform LUT representing a uniform sampling in the CMYKOG device space of the forward model, which goes from CMYKOG to the ICC “Profile Connection Space” (either CIELAB or CIEXYZ). Also, the ICC link profile enables a direct transformation from CMYKOG device space to any color space including a device space, also in the form of a LUT sampled uniformly in CMYKOG space. Furthermore, sampling is never done with a high number of levels because of the large size of the resulting LUT, except in the case of monochrome devices (1 channel). Instead, sampling with lower levels is used, with typical choices of 9 levels, 17 levels, or 33 levels. With a lower number levels in each channel, the LUT is used in conjunction with an interpolation algorithm to produce the result if a requested level is in between two sampled levels. In short, LUT uniformly sampled in the source color space of the transformation followed by interpolation is mandated in ICC specification and is considered the industrial standard.
Beyond the ICC's approach of uniform LUT, it is noteworthy that other transform structures have been proposed. In the Sequential Linear Interpolation (SLI) structure, nodes of a “LUT” are not uniformly spaced but instead are placed strategically so that the resulting grid minimizes the interpolation error by following the characteristics of the underlying transformation, putting more nodes in places where the transformation varies more rapidly, less in places where the transformation varies slowly. In another approach called Variable Rectilinear Interpolation (VRI) structure, a non-uniform grid is constructed with the same objective as SLI, which is to minimize the interpolation error. However, the VRI node placement uses the idea of successive subdivision of rectangular cells, subdividing more times in places where the underlying transformation varies rapidly, less in times where the transformation varies slowly.
While a uniform LUT is conceptually simple and easy to implement, and interpolation on a uniform LUT is generally very efficient, the LUT size increases exponentially with the input dimension. In fact, if d is the number of steps used in the uniform LUT, and n is the number of channels in the source color space, then the number of nodes in the LUT is dn. Clearly, the number of nodes quickly becomes so computationally demanding in storage/memory that computational resources may become strained. For high fidelity devices with six or eight channels, an ICC implementation of the device profile practically necessitates using fewer steps in the LUT, sometimes even down to 5 steps in the A2B1 table to keep the profile size within megabytes instead of gigabytes. Clearly, using smaller number of steps increases interpolation error, as there are now fewer sampling steps. Moreover, because the LUT is required to be uniform, this is an across-the-board degradation of accuracy over the whole color space, even in those regions of the space where a significant color difference can be caused by small change in the device value. Also peculiar to high fidelity devices is the fact that certain subspaces of the whole device space are more important than the others. For example, in CMYKOG space, cyan and green inks are seldom used together because their hues are largely overlapping each other, and the same goes for yellow and orange inks. A uniform reduction in the number of steps can be viewed as an overall degradation in quality across the whole color space, which is something that can be tolerated for the improbable ink combinations, but not for the likely/important combinations.
In either the SLI or VRI approach, the objective is to minimize the interpolation error, not to control the total number of nodes used in the LUT. They are mainly used in conventional color spaces such as RGB, CMYK or CIELAB, which have four or less channels. In fact, the objective of minimizing the interpolation error may result in a LUT that is bigger than it would be if uniform LUT was used.
Therefore, a need exists for a color conversion system for color printers having a large number of input channels that yields accurate color conversions yet is computational manageable. Various aspects of the present invention meet such a need.